﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary; // Namespace til serialisering, binær data

namespace Frugtplantage
{
    class MarkerCollection
    {
        //Deklaration
        List<Marker> MarkerListe;

        //Constructor
        public MarkerCollection()
        {
            MarkerListe = new List<Marker>();
        }


        //------------
        // Set metoder
        //------------

        // Opret i listen
        public void SetMyMark(int nummer1, int nummer2, string adresse, string stoerrelse, string type, string sort, DateTime alder)
        {
            Marker minMark = new Marker(nummer1, nummer2, adresse, stoerrelse, type, sort, alder);
            MarkerListe.Add(minMark);
        }

        // Opdater felt i liste
        public void updateMyMark(int indexID, int updateNummer1, int updateNummer2, string updateAdresse, string updateStoerrelse, string updateType, string updateSort, DateTime updateAlder)
        {
            Marker minMark = new Marker(updateNummer1, updateNummer2, updateAdresse, updateStoerrelse, updateType, updateSort, updateAlder);
            MarkerListe[indexID] = minMark;
        }

        // Fjern fra listen
        public void FjernMyMark(int indexID)
        {
            MarkerListe.RemoveAt(indexID);
        }


        //------------
        // Get metoder
        //------------

        // Get alle marker metode (overdrager listen)
        public List<Marker> GetMyMark()
        {
            return MarkerListe;
        }


        //-------------------------
        // Gem og hent data fra fil
        //-------------------------

        // Gem data
        public void GemData()
        {

            // Skab fil for skrivning
            try
            {
                FileStream fileStream = new FileStream("marker.bin", FileMode.Create, FileAccess.Write);

                // skab binary-formatter til objekt-serialisering
                BinaryFormatter binFormatter = new BinaryFormatter();

                // serialiser medlemssystem til filestream
                binFormatter.Serialize(fileStream, MarkerListe);

                fileStream.Close(); 
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.ToString());
            }
            

        }

        // Hent data
        public void HentData()
        {
            FileStream filestream;
            try
            {
                filestream = new FileStream("marker.bin", FileMode.Open, FileAccess.Read);
            }
            catch (Exception)
            {
                throw;
            }


            BinaryFormatter binFormatter = new BinaryFormatter();

            MarkerListe = (List<Marker>)binFormatter.Deserialize(filestream);


            filestream.Close();
        }
    }
}
